﻿#coding=utf-8

import wx

from product import CDataVersion

#MyListFont = wx.Font(12, wx.SWISS, wx.NORMAL, wx.NORMAL, False, u'Times New Roman')
#MyListColor = wx.Colour(128, 255, 128)

class Cfg:
    CUSTOMER_POPUP_COLS = [('id',0),('name',-1),('linkman', -1),('phone',-1),
                        ('debt',-1),('addr',-1),('email',-1),('fax', -1),('memo',-1)]
           
    screenSize = (0,0)
    
    #version_major = 0
    #version_minor = 1
    version = '0.1'
    
    @classmethod
    def checkVersion(cls):
        dbVer = CDataVersion.getVersion()
        if (dbVer != cls.version):
            return False
        
        return True
            
    @classmethod
    def getCustPopupColsText(cls):
        cols = []
        for i in range(len(cls.CUSTOMER_POPUP_COLS)):
            cols.append(cls.CUSTOMER_POPUP_COLS[i][0])
        return cols
        
    @classmethod
    def getCustPopupColsMode(cls):
        return cls.CUSTOMER_POPUP_COLS
    
    saleOrderListCols = [(u'订单号', -1), (u'客户名称', -1), (u'总金额',  -1), (u'已付金额',  -1), 
                        (u'未付金额',  -1), (u'优惠金额', -1), (u'订单日期',  -1), 
                        (u'配送方式',  -1), (u'备注',  -1), (u'经手人',  -1),
                        (u'操作员', -1)]
    @classmethod
    def getListColsText(cls, cmd):
        colText = []
        if (cmd == 'saleOrderList'):
             cols = cls.saleOrderListCols
        
        for i in range(len(cols)):
            colText.append(cols[i][0])
        return colText
        
    @classmethod
    def getListColsMode(cls, cmd):
        if (cmd == 'saleOrderList'):
            return cls.saleOrderListCols
                        
    @classmethod
    def getScreenSize(cls):
        return cls.screenSize
        
    @classmethod
    def getScreenWidth(cls):
        return cls.screenSize[0]
        
    @classmethod
    def getScreenHeight(cls):
        return cls.screenSize[1]
        
    @classmethod
    def setScreenSize(cls, size):
        cls.screenSize = size
        
    @classmethod
    def getFrameMainSize(cls):
        return (cls.screenSize[0], cls.screenSize[1]-30)
    
    @classmethod
    def getDlgAreaSize(cls):
        return (cls.screenSize[0], cls.screenSize[1]-120-30)
        
    @classmethod
    def getDlgAreaPos(cls):
        return (0, 120)
    
    @classmethod
    def getFrameBgColor(cls):
        return wx.Colour(183, 209, 173)
    
    @classmethod
    def getFrameFont(cls):
        return wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              u'\u6977\u4f53_GB2312')
    
    #登录用户
    curStaff = None
    @classmethod
    def setCurUser(cls, staff):
        cls.curStaff = staff
        
    @classmethod
    def getCurUser(cls):
        return cls.curStaff
    
    @classmethod
    def initCfg(cls):
        cls.setScreenSize(wx.DisplaySize())

class CBriefCode:
    @staticmethod
    def getBriefCode(str_input):
        if isinstance(str_input, unicode):
            unicode_str = str_input
        else:
            try:
                unicode_str = str_input.decode('utf8')
            except:
                try:
                    unicode_str = str_input.decode('gbk')
                except:
                    print 'unknown coding'
                    return
        
        return_list = []
        for one_unicode in unicode_str:
            #print CBriefCode.single_get_first(one_unicode)
            return_list.append(CBriefCode.single_get_first(one_unicode))
        return "".join(return_list)    
    
    @staticmethod
    def single_get_first(unicode1):
        str = {u'塘':'t', u'圩':'x', u'茉':'m',u'鑫':'x',u'堽':'g',
                u'翟':'z', u'滕':'t',u'梓':'z',}
                
        if str.has_key(unicode1):
            return str[unicode1]
        
        str1 = unicode1.encode('gbk')
        try:        
            ord(str1)
            return str1
        except:
            asc = ord(str1[0]) * 256 + ord(str1[1]) - 65536
            if asc >= -20319 and asc <= -20284:
                return 'a'
            if asc >= -20283 and asc <= -19776:
                return 'b'
            if asc >= -19775 and asc <= -19219:
                return 'c'
            if asc >= -19218 and asc <= -18711:
                return 'd'
            if asc >= -18710 and asc <= -18527:
                return 'e'
            if asc >= -18526 and asc <= -18240:
                return 'f'
            if asc >= -18239 and asc <= -17923:
                return 'g'
            if asc >= -17922 and asc <= -17418:
                return 'h'
            if asc >= -17417 and asc <= -16475:
                return 'j'
            if asc >= -16474 and asc <= -16213:
                return 'k'
            if asc >= -16212 and asc <= -15641:
                return 'l'
            if asc >= -15640 and asc <= -15166:
                return 'm'
            if asc >= -15165 and asc <= -14923:
                return 'n'
            if asc >= -14922 and asc <= -14915:
                return 'o'
            if asc >= -14914 and asc <= -14631:
                return 'p'
            if asc >= -14630 and asc <= -14150:
                return 'q'
            if asc >= -14149 and asc <= -14091:
                return 'r'
            if asc >= -14090 and asc <= -13119:
                return 's'
            if asc >= -13118 and asc <= -12839:
                return 't'
            if asc >= -12838 and asc <= -12557:
                return 'w'
            if asc >= -12556 and asc <= -11848:
                return 'x'
            if asc >= -11847 and asc <= -11056:
                return 'y'
            if asc >= -11055 and asc <= -10247:
                return 'z'
            return ''        
        
class _const:
    class ConstError(TypeError):
        pass
    
    def __setattr__(self,name,value):
        if self.__dict__.has_key(name):
            raise self.ConstError, "Can't rebind const (%s)" %(name)
        self.__dict__[name] = value


###register const into sys.modules
##import sys
##sys.modules[__name__]=_const()